home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / misc_src / cslib16b / include / csarray.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-01  |  2.7 KB  |  97 lines

  1. /***********************************************************************
  2.  
  3.                                       CSDB Library, Version 1.6.b 
  4.                                          Released: March 2nd 1995 
  5.  
  6.        Definition of a virtual array class with
  7.        boundary checking.
  8.  
  9.                                            Copyright(c) 1994,1995 
  10.                                                            Combis 
  11.                                                   The Netherlands 
  12. ***********************************************************************/
  13.  
  14. #ifndef __CSARRAY_H
  15. #define __CSARRAY_H
  16.  
  17. #include "stdlib.h"
  18. #include "stdio.h"
  19. #include "csedstr.h"
  20.  
  21. #ifdef CS_DEBUG
  22.   #define  TEST_IN(key) test_index(key);
  23. #else
  24.   #define  TEST_IN(key)
  25. #endif
  26.  
  27.  
  28.  typedef union
  29.  {
  30.    void * p;
  31.    long   l;
  32.  } dat;
  33.  
  34.  
  35. #pragma warn -sig
  36.  
  37. class ARRAY
  38. {
  39.   private:
  40.  
  41.  
  42. protected:
  43.  
  44.       size_t nr_lin;
  45.       dat    *lbuf;
  46.       STR    d_name;
  47.  
  48.       void test_index(long key);
  49.  
  50.  
  51.   public:
  52.  
  53.       ARRAY(void);
  54.       ~ARRAY(void);
  55.       void zap(void);
  56.       void debug_name(CSCHAR *s);
  57.       void size(size_t nr);
  58.       void insert(long key,void *d)     { TEST_IN(key)  lbuf[key].p=d;    }
  59.       void insert(long key,long  d)     { TEST_IN(key)  lbuf[key].l=d;    }
  60.       void delet(long key)         { TEST_IN(key)  lbuf[key].p=NULL; }
  61.       void *locate(long key)         { TEST_IN(key)  return lbuf+key;  }
  62.       void *locate(size_t key)         { TEST_IN(key)  return lbuf+key;  }
  63.       void search(long key,void *&d)     { TEST_IN(key)  d=lbuf[key].p; }
  64.       void search(long key,long  &d)     { TEST_IN(key)  d=lbuf[key].l; }
  65.       void search(long key,void *&d,void** &add)
  66.                      { TEST_IN(key)  d=*(add=&lbuf[key].p); }
  67.       void search(long key,long  &d,long * &add)
  68.                      { TEST_IN(key)  d=*(add=&lbuf[key].l); }
  69.       void insert(int key,dat  d)     { TEST_IN(key)  lbuf[key]=d;  }
  70.       void insert(int key,void *d)     { TEST_IN(key)  lbuf[key].p=d;  }
  71.       void insert(int key,void *d,void ** &add)
  72.                      { TEST_IN(key)  add=&(lbuf[key].p=d); }
  73.       void insert(int key,long    d)     { TEST_IN(key)  lbuf[key].l=d;    }
  74.       void insert(int key,long    d,long * &add)
  75.                      { TEST_IN(key)  add=&(lbuf[key].l=d); }
  76.       void delet(int key)         { TEST_IN(key)  lbuf[key].p=NULL; }
  77.       void search(int key,void *&d)     { TEST_IN(key)  d=lbuf[key].p; }
  78.       void search(int key,long    &d)     { TEST_IN(key)  d=lbuf[key].l; }
  79.  
  80.       int  report(CSCHAR *name,int sub=10);
  81.       void report(FILE *fipo,int sub=10);
  82.  
  83.       long export(FILE *fp,long nr);
  84.       long export(FILE *fp)         { return export(fp,nr_lin+1); }
  85.       long import(FILE *fp,long number);
  86.       void empty(void);
  87.  
  88.  
  89. };
  90.  
  91.  
  92.  
  93. #pragma warn .sig
  94.  
  95.  
  96. #endif
  97.